#!/bin/sh
#
# This script reads in variables from a config file, and produces a list of
# commands to run to set these as shell environment variables, it is
# intended to be used as follows:
#
#   eval $(readhash /var/ipfire/main/settings)
#

# shell variables must consist of alphanumeric characters and underscores,
# and begin with an alphabetic character or underscore.
VARNAME='[A-Za-z_][A-Za-z0-9_]*'

# For the assigned value we only accept a limited number of characters - none
# of which are shell metachars
VARCHARS='A-Za-z0-9=/,.:%_@#+-'
VARVAL="[${VARCHARS}]*"

sed -ne "s/\(${VARNAME}\)=\(${VARVAL}\)$/\1=\2/p" $1

# Accept space only if it's quoted
sed -ne "s/\(${VARNAME}\)=\('[ ${VARCHARS}]*'\)$/\1=\2/p" $1
